<?php

namespace IYUU\sdk\CoolQ;

use EventListenerInterface;

/**
 * 模块消息订阅器，抽象类
 * Class ModulesReceiver
 * @package IYUU\sdk\CoolQ
 */
abstract class ModulesReceiver implements EventListenerInterface
{
    /**
     * 模块需要订阅的事件
     * - 返回要监听的事件数组，可监听多个事件
     * @return array
     */
    abstract public function events(): array;

    /**
     * 模块订阅器的处理方法(事件触发后，会执行该方法)
     * - 功能主要是在接口处理完跟客户交互的相关逻辑后，模块最后执行的一些脚本（即系统内的模块订阅）
     *
     * @param object $event
     */
    abstract public function process(object $event): void;
}
